From c1a2ecc369b8419fdd835bb4d45b48982bfb6dab Mon Sep 17 00:00:00 2001 From: =?utf8?q?Javier=20Jard=C3=B3n?= Date: Thu, 22 Jul 2010 16:43:23 +0200 Subject: [PATCH] Check if childs actually exists before using it Check seems to have gone lost during GtkBin sealing in commit 4427760b Fixes https://bugzilla.gnome.org/show_bug.cgi?id=624707 --- gtk/gtkhandlebox.c | 9 ++++++--- gtk/gtkmenuitem.c | 3 ++- gtk/gtkoffscreenwindow.c | 6 ++++-- gtk/gtkplug.c | 6 ++++-- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/gtk/gtkhandlebox.c b/gtk/gtkhandlebox.c index 971ebd5dc9..ead564c313 100644 --- a/gtk/gtkhandlebox.c +++ b/gtk/gtkhandlebox.c @@ -378,7 +378,8 @@ gtk_handle_box_map (GtkWidget *widget) gtk_widget_set_mapped (widget, TRUE); child = gtk_bin_get_child (bin); - if (gtk_widget_get_visible (child) && + if (child != NULL && + gtk_widget_get_visible (child) && !gtk_widget_get_mapped (child)) gtk_widget_map (child); @@ -652,7 +653,7 @@ gtk_handle_box_size_allocate (GtkWidget *widget, widget->allocation.height); - if (gtk_widget_get_visible (child)) + if (child != NULL && gtk_widget_get_visible (child)) { GtkAllocation child_allocation; guint border_width; @@ -919,6 +920,7 @@ gtk_handle_box_paint (GtkWidget *widget, GtkHandleBox *hb = GTK_HANDLE_BOX (widget); GtkHandleBoxPriv *priv = hb->priv; GtkBin *bin = GTK_BIN (widget); + GtkWidget *child; gint width, height; GdkRectangle rect; GdkRectangle dest; @@ -993,7 +995,8 @@ gtk_handle_box_paint (GtkWidget *widget, event ? &event->area : area, handle_orientation); - if (gtk_widget_get_visible (gtk_bin_get_child (bin))) + child = gtk_bin_get_child (bin); + if (child != NULL && gtk_widget_get_visible (child)) GTK_WIDGET_CLASS (gtk_handle_box_parent_class)->expose_event (widget, event); } diff --git a/gtk/gtkmenuitem.c b/gtk/gtkmenuitem.c index 580cb02551..ded538c26c 100644 --- a/gtk/gtkmenuitem.c +++ b/gtk/gtkmenuitem.c @@ -973,7 +973,8 @@ gtk_menu_item_size_request (GtkWidget *widget, requisition->height += 2 * horizontal_padding; child = gtk_bin_get_child (bin); - if (gtk_widget_get_visible (child)) + + if (child != NULL && gtk_widget_get_visible (child)) { GtkRequisition child_requisition; diff --git a/gtk/gtkoffscreenwindow.c b/gtk/gtkoffscreenwindow.c index 30cc7a2b49..1c51abe2b4 100644 --- a/gtk/gtkoffscreenwindow.c +++ b/gtk/gtkoffscreenwindow.c @@ -64,7 +64,8 @@ gtk_offscreen_window_size_request (GtkWidget *widget, requisition->height = border_width * 2; child = gtk_bin_get_child (bin); - if (gtk_widget_get_visible (child)) + + if (child != NULL && gtk_widget_get_visible (child)) { GtkRequisition child_req; @@ -103,7 +104,8 @@ gtk_offscreen_window_size_allocate (GtkWidget *widget, allocation->height); child = gtk_bin_get_child (bin); - if (gtk_widget_get_visible (child)) + + if (child != NULL && gtk_widget_get_visible (child)) { GtkAllocation child_alloc; diff --git a/gtk/gtkplug.c b/gtk/gtkplug.c index 5bb003afc0..f1e2a19fe0 100644 --- a/gtk/gtkplug.c +++ b/gtk/gtkplug.c @@ -710,7 +710,8 @@ gtk_plug_map (GtkWidget *widget) gtk_widget_set_mapped (widget, TRUE); child = gtk_bin_get_child (bin); - if (gtk_widget_get_visible (child) && + if (child != NULL && + gtk_widget_get_visible (child) && !gtk_widget_get_mapped (child)) gtk_widget_map (child); @@ -765,7 +766,8 @@ gtk_plug_size_allocate (GtkWidget *widget, allocation->width, allocation->height); child = gtk_bin_get_child (bin); - if (gtk_widget_get_visible (child)) + + if (child != NULL && gtk_widget_get_visible (child)) { GtkAllocation child_allocation; -- 2.30.2